package com.example.blog_system.security;

import org.springframework.stereotype.Service;
import java.util.concurrent.ConcurrentHashMap;
import java.util.Map;

@Service
public class TokenBlacklistService {
    private final Map<String, Long> blacklistedTokens = new ConcurrentHashMap<>();

    /**
     * 将token加入黑名单
     * @param token JWT token
     * @param expirationTime token的过期时间（毫秒时间戳）
     */
    public void blacklistToken(String token, Long expirationTime) {
        blacklistedTokens.put(token, expirationTime);
        cleanupExpiredTokens();
    }

    /**
     * 检查token是否在黑名单中
     * @param token JWT token
     * @return true如果token在黑名单中
     */
    public boolean isTokenBlacklisted(String token) {
        return blacklistedTokens.containsKey(token);
    }

    /**
     * 清理已过期的token
     */
    private void cleanupExpiredTokens() {
        long currentTime = System.currentTimeMillis();
        blacklistedTokens.entrySet().removeIf(entry -> entry.getValue() < currentTime);
    }
}